package com.project.service;

import com.github.pagehelper.PageInfo;
import com.project.bean.RoomBean;

import java.util.List;

/**
 * 房间业务接口
 */
public interface IRoomService {
    /**
     * 根据性别查询可住房间（已住人数<可住人数）
     *
     * @param gender 性别
     * @return 房间集合；
     * 房间信息：房间编号、房间地址
     */
    public List<RoomBean> findByGender(String gender);

    /**
     * 动态条件分页查询房间信息，同时统计每个房间的已住人数（外联接）
     * @param pageNO 页码
     * @param address 房间地址
     * @param status 房间状态
     * @param canIn 是否可住
     * @param roomGender 类型
     * @return 房间分页对象
     * 房间信息：房间id、房间地址、可容纳人数、已住人数、房间状态、房间类型
     */
    public PageInfo<RoomBean> findByItem(Integer pageNO, String address, String status, String canIn, String roomGender);

    /**
     * 完成房间信息的添加
     * @param room 房间对象（房间地址、可容纳人数、房间类型）
     */
    public void addRoom(RoomBean room);

    /**
     * 按房间的id统计学生人数，如果学生人数不为0，返回false。如果学生人数为0，
     * 则先按房间的id删除对应的设施记录，完成房间的删除，返回true
     * @param roomId 房间id
     * @return 删除成功返回true，失败返回false
     */
    public boolean delRoom(Integer roomId);

    /**
     * 按房间的id查询房间的信息，同时统计房间的已住人数。按房间的id查询
     * 该房间所住学生的信息，同时查询学生所在的班级名称
     * @param roomId 房间id
     * @return 房间对象
     * 房间信息：房间id、房间地址、可容纳人数、已住人数、房间状态、房间类型
     * 学生信息：学生id、姓名、班级名称、电话
     */
    public RoomBean findById(Integer roomId);

}
